home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / apps / 471 / applic / diary_19.doc < prev    next >
Text File  |  1990-05-18  |  53KB  |  992 lines

  1. DIARY & EdHak Versions 1.9                                 05/14/90
  2. ==========================
  3.  
  4. This documentation is for both Diary and EdHak, and any references to DIARY
  5. also apply to EdHak.  The reason for having these two versions is so that
  6. anyone who JUST wants an editor to safely edit files can have it, while
  7. those of us who want the ability to edit ANYTHING can have that.  EdHak is
  8. exactly the same as Diary, but has the two added features of (1) being able
  9. to edit disk sectors (with which you could ruin your hard drive or floppies
  10. by changing the boot sector, FAT, or directory), and (2) being able to edit
  11. your ST's memory (which can merely cause bombs on your screen). 
  12.  
  13. To Registered users receiving this on a disk in the mail:  The 'R' on the
  14. end of the 1.9R means this version is for you.  It is not to be made
  15. available for download anywhere, and I would appreciate it if you want to
  16. share Diary with anyone, that you give them the standard DIARY_19.ACC,
  17. (or EDHAK_19.ACC) also included on the Diary disk.  Your v 1.9R has been
  18. personalized for you (take a look at the Help screen).  Also, it (a) is
  19. able to save a New Configuration to disk, and it (b) defaults to
  20. non-display of the 'cr' at the end of lines and allows you to toggle that
  21. display on and off with Control-Return.  Please DO distribute the shareware
  22. version of Diary to friends, BBS's etc, but please also include this
  23. documentation file.
  24.  
  25. I think Diary has become a fairly mature piece of software, as well as
  26. including some unique features.  Therefore, I have set the registration fee
  27. to $10 for anyone who has not previously registered.  See the information
  28. below in the Registration section on how to own your copy of Diary and what
  29. exactly you get for registering.
  30.  
  31.  
  32. Contents
  33. ========
  34. New for Version 1.9
  35. Intro for Those New to Diary
  36. Cursor Controls
  37. Command Descriptions (menus & keyboard commands)
  38. Compatibility? (problems you may run into)
  39. The Future of Diary
  40. Registration (if you wish to own Diary after trying it out)
  41. Final Words (disclaimer & where to reach me)
  42.  
  43.  
  44. New for Version 1.9     (5/9/90)
  45. ===================
  46.  
  47. 1)  Run as either .PRG or .ACC just by renaming file.  Beware that when run
  48. as a PRG, you must remember to save your work to disk before you exit or it
  49. WILL be lost.  This differs from running as an ACC when your work is still
  50. there next time you open up the accessory (unless of course you have
  51. rebooted).  Also note that you will get two bombs every time you exit from
  52. running as a prg.  As far as I have found, this does not result in any
  53. problem -- there is no crash or lockup of any kind.  But, since it can be
  54. frightening until you get used to it, I've included the little reminder
  55. alert box telling you not to care about the bombs.
  56.  
  57. 2)  Now allows macro F10 to be used as a printer setup string that is sent
  58. prior to every print operation.
  59.  
  60. 3)  Control-Arrow = Move cursor to next/previous word.  The function that
  61. this key combination used to serve, which was moving the cursor to the
  62. start or end of the portion of a long line within the current window, is
  63. now done with Shift-Control-Arrow.
  64.  
  65. 4)  Added overwrite/append default to configuration options.
  66.  
  67. 5)  Added Save with BAKup to configuration options.
  68.  
  69. 6)  Window size (full/half) is now saved in config file with other current
  70. settings.
  71.  
  72. 7)  Add Alt-Z (menu2-Zap) command to send block or whole buffer to serial
  73. port (for modem or serial printer).
  74.  
  75. 8)  Much faster search routine (now in machine code).
  76.  
  77. 9)  Filename is now displayed at top of window. (In low res the last couple
  78. characters will not show if it's a full 12-character filename.)  This is
  79. only the filename and does not include the full path.  That information can
  80. still be found in the configuration display (Alt-N).
  81.  
  82. 9a) For EdHak, when editing disk sectors or RAM, the title shows either
  83. the starting sector of the block you loaded or the address of the block
  84. of RAM that you are viewing.
  85.  
  86. 10) I THINK everything should now be compatible with large screens
  87. (Moniterm) and large screen emulators (MonSTEr).  Let me know if not.
  88.  
  89. 11) Search routine now places the found position on the second line rather
  90. than the top line to make it easier to see the context.
  91.  
  92. 12) Merge file now defaults to a filename of 'BLOCK.TXT' so as to be the
  93. same as the default filename for Block Save.  This makes it a little easier
  94. to cut/paste between documents or between 2 windows of Diary.
  95.  
  96.  
  97. Bugs Fixed in Version 1.9
  98. -------------------------
  99.  
  100. 1)  Properly shows "Macro Set" or "Truncated" notice when saving a macro
  101. (CTL-FuncKey).
  102.  
  103. 2)  Fixed disappearing mouse when you have two Diary windows open and do a
  104. Search or New config. (This took a week to unravel all the interplay
  105. between all the GEM events when multiple accessories are running.)
  106.  
  107. 3)  Got rid of "Working" notice remaining after doing a global replace.
  108.  
  109. 4)  Fixed bug that gave an Alert box saying "buffer full" when trying to
  110. trying to insert something with the buffer set to 64K.  (It worked fine if
  111. the buffer was set to 63K or less.)  Other related 64K bugs also fixed.
  112.  
  113. 5)  Fixed disappearing mouse if the AutoLoad function failed to find the
  114. desired file.
  115.  
  116. 6)  Properly sets slider after encryption.
  117.  
  118. 7)  Fixed bug that gave you a zero buffer size if you saved a new config
  119. without setting a different buffer size.
  120.  
  121. 8)  Fix bug that allowed cursor positioning anywhere on first line even
  122. though the buffer was empty when in Hack mode.
  123.  
  124. 9)  Hitting F6 (Find next match) before setting a string to find no longer
  125. crashes the system.
  126.  
  127. 10) Diary once again works with UniTerm, as it did before version 1.8. 
  128. Please see the Compatibility section for more details.
  129.  
  130. 11) Fixed wrap column for when you save your configuration while in Hack
  131. mode.  It used to default to 75 instead of the 64 or 32 appropriate
  132. for Hack mode.
  133.  
  134.  
  135. INTRO FOR THOSE NEW TO DIARY
  136. ============================
  137. You can always hit the Help key or use the drop-down menu if you don't
  138. know what you're doing.
  139.  
  140. This program is simply a text editor accessory that opens up a half-screen
  141. window which you can move up or down on your screen, and toggle between
  142. full and half size.  Being a desk accessory, it is available from within
  143. any other GEM program that has a menu bar, so you can get to it whenever
  144. you want to jot something down or view or make changes in a file without
  145. going to get your favorite word processor or disk sector editor.  Unless
  146. you register and get the version that allows saving a new configuration,
  147. the text buffer is limited to 10K of data, which it allocates all at
  148. once when you boot up.  Any text in the buffer stays there until you Clear
  149. it or reboot, regardless of whether you have the Diary window open. 
  150. In Text mode, Diary deals strictly in text with the standard CR/LF at the
  151. end of each line, but in 'Hack' mode it can handle anything.  It only
  152. displays the 'cr' but the line feed is still there.  If you are editing
  153. something other than text, just turn off the word-wrap before doing
  154. anything else or switch to Hack mode.
  155.  
  156. If you cover up the Diary window by clicking on a desktop or application
  157. window, you can get back to Diary either by clicking on any visible part
  158. of the Diary window (if any is still showing) or by going to the desktop
  159. desk accessory menu and clicking on Diary as if you were opening it.  In
  160. most cases, it is OK to open or close an application when the Diary window
  161. is open.  It just causes the window to close, and you can then re-open it
  162. as usual.
  163.  
  164. One slightly strange thing in Diary is the simple little drop down menu
  165. within the Diary window.  The items don't highlight as in a normal menu
  166. (since I couldn't justify the added program size and programming hassle to
  167. accomplish this), but the menu goes away just by moving the mouse outside
  168. the menu without having to click again.
  169.  
  170. If you have less available RAM than needed for the normal versions of
  171. Diary, but still want some way to do simple text editing, a stripped
  172. version of Diary called DIARY19S.ACC is available that only takes up 43K of
  173. ram (compared to about 74K for the full version 1.9).  This was
  174. accomplished by decreasing the buffer size to 4K and removing a number of
  175. features, most notably the word wrap, all block functions, and all menu2
  176. functions.
  177.  
  178.  
  179. CURSOR CONTROLS
  180. ===============
  181. Arrow keys               =  Left, Right, Up, Down
  182. Shift-Up/Down arrow      =  Page up/down
  183. Shift-Left/Right arrow   =  Go to start/end of line
  184. Cntrl-Left/Right arrow   =  Go left/right to previous/next word
  185. Shft-Cntrl-Left/Rt arrow =  Go to left/right edge of line in window
  186.                               (useful for lines longer than window)
  187. ClrHome         =  Toggle cursor to top/bottom of screen
  188. Shift-ClrHome   =  Toggle cursor to top/bottom of buffer
  189. Tab             =  Go to next tabstop (inserts spaces if in insert mode)
  190.  
  191.  
  192. COMMAND DESCRIPTIONS  (in menu sequence)
  193. ====================
  194.  
  195. Menu 1 and Menu 2
  196. -----------------
  197. The 'Menu' button near the left end of the window title bar gives access to
  198. all the file, editing, and configuration commands.  When you first move
  199. the mouse into that area, then the first menu, Menu 1, drops down.  If you
  200. then click the left mouse button in the block that now says: 'To Menu 2',
  201. you will cause Menu 1 to be replaced by Menu 2, which has commands that are
  202. less likely to be needed as often.  The drop down menu goes away just by
  203. moving the mouse outside the menu area, with no clicking needed.
  204.  
  205. Note that in my attempts to minimize the size of the program, I have not
  206. added the code to make the menu items highlight as the mouse moves over
  207. them.  So, just point to the command you want and click the left mouse
  208. button to make it happen.
  209.  
  210.  
  211. Open File  (Alt-O, Alt-R, menu: Open...)
  212. ---------
  213. This lets you read a file of ANY type (text, doc, prg, tos, rsc, etc.)
  214. or (with EdHak only) any range of disk sectors into the edit buffer.  If
  215. the file is anything other than ASCII text, you will see funny characters
  216. on the screen for each non-ascii byte.
  217.  
  218. If the file is larger than the buffer, you will be asked what portion of
  219. the file to load.  You can use the keyboard or mouse to set which part of
  220. the file to load -- zero loads the first part of the file, '1' loads the
  221. file starting at a point 1K (1024 bytes) into it, '2' starts 2K into it,
  222. etc.  The amount of the file that gets loaded is 2K less than the buffer
  223. size.  So, with the default 10K buffer, it will load in 8K.
  224.  
  225. If you already have stuff in the edit buffer that hasn't been saved, you
  226. will be asked if you want to save it first.  After taking care of that,
  227. you will be asked if you want to open a New file or Merge a file into the
  228. current one at the cursor.  Opening a new file will destroy everything
  229. currently in the buffer.  
  230.  
  231. If you choose to merge a file into the current one and there is not enough
  232. room in the buffer, the merge will not be done at all -- there is no
  233. provision to merge just part of a file.  You can always get around that by
  234. first saving the current file, loading the one you wanted to merge, saving
  235. a block from that one, loading the original file, and then merging the
  236. block that you had saved.
  237.  
  238. If you leave the filename portion of the file selector blank, and you have
  239. the disk editing option enabled (as it is in EdHak), then the disk drive
  240. you have chosen is opened as if it were simply a huge file, and you get to
  241. choose which block of sectors to load into the edit buffer.
  242.  
  243. For useful information on opening and editing files other than ASCII text
  244. files (including disk sectors), please see the Hack Options section below.
  245.  
  246.  
  247. Save File  (Alt-S, menu: Save...)
  248. ---------
  249. This always gives you a file selector to choose the filename you wish to
  250. have the file saved as.  It will default to the filename you last opened if
  251. there was one.  If you try to save to a filename that already exists on the
  252. disk, it will warn you of this and ask if you want to Overwrite the old
  253. file, or Append to the end of that file.  The Append option is handy if you
  254. are using it as an actual diary, or if you want to add text to the end
  255. of a large file without having to read that file into the buffer first. 
  256. Note that this initially defaults to Overwrite (without a backup), but then
  257. defaults to whichever you last used.  Also, using the configuration options
  258. described below, you can force it to initially default to Append and/or
  259. always save with a backup if you wish.
  260.  
  261. If you have a block selected, you will be asked if you want to save just
  262. that block or the entire buffer.  It defaults to saving only the block.
  263.  
  264.  
  265. Opening/Saving Files larger than the Diary buffer or
  266. even larger than your ST's total memory!
  267. (or when is 10K equal to 100 megs?)
  268. -----------------------------------
  269. Despite Diary's small (default of 10K) text buffer size, it will handle ANY
  270. size file by loading in only a portion of the file that you want.  It is
  271. "limited" to the first 99 megabytes, just because the biggest number the
  272. dialog box lets you enter is 99999.  If anyone finds this to be a
  273. limitation, let me know!  Block zero is the first 8K block of the file, and
  274. the dialog box will allow you to go up to a block starting at about 1K from
  275. the end of the file, which would give you over 8K of free space to add text
  276. to the end of the file.  When you go to save the file, Diary will take care
  277. of stringing together the text from the original file with the block of it
  278. that you edited to create a new file.  This means that it won't overwrite
  279. the latest version of the original on disk, since it needs that to create
  280. the new version to be saved.  For you power users this also means that you
  281. should be careful if you have two copies of Diary or Diary plus another
  282. editor running at the same time, not to make changes in the same document
  283. on disk or in both windows of Diary, and then expect to be able to save a
  284. complete file from both.
  285.  
  286. Since you can only load an 8K block of a file that is bigger than 10K, it
  287. will require more work to do some things, like doing a cut/paste from the
  288. end of a big file to its beginning.  To do such a thing you would need to
  289. first save the file after the Cut, then read in the other portion of the
  290. file, and finally do the Paste.  Or to handle a block larger than the
  291. paste buffer size, you can first save the block to disk and then use the
  292. Merge feature to paste it at the desired location.  
  293.  
  294.  
  295. On-line Help  (Alt-H, HELP key, menu: Help!)
  296. ------------
  297. This displays a brief list of the commands and what they do.  This includes
  298. cursor controls, file handling, configuration, and all editing commands. 
  299. Note that the README file will include any new commands that may not have
  300. made their way into the help screens.
  301.  
  302.  
  303. Word Wrap  (Alt-W, F10, menu: Wrap...)
  304. ---------
  305. This command first gives you an alert box with the choices of Wrap!...,
  306. Cancel, or Turn Off.  With Wrap turned On (which is the default), Diary
  307. will word wrap to a default line length of 75 characters, plus the CR/LF
  308. for a total of 76 (or 64 if in 'Hack' mode, or appropriately shorter
  309. lengths in low resolution).  This length can be changed with the Alt- '>'
  310. command.  Word wrap occurs automatically when adding to the end of your
  311. text and you hit the word wrap column, or when inserting text in a line
  312. that reaches the wrap column.  With Wrap turned Off, you can create/edit
  313. lines of any length (within the size limit of the whole buffer, of course).
  314. Turning Wrap off also can be useful if you get annoyed by the constant
  315. redrawing of the the rest of the screen while inserting text.  In this
  316. case, all the text you insert will be on one line until you force it to
  317. wrap using the Wrap! command.  Regardless of whether Wrap is turned on or
  318. off, you can always force a wrap (reformat a paragraph, line, or whole
  319. buffer) with the Wrap! button of the alert box.  I have gotten very quick
  320. at hitting F10, Return, Return to reformat the current paragraph.  Diary
  321. assumes paragraphs are separated by a blank line.
  322.  
  323. To change the column at which word wrap occurs, please see the description
  324. of the Margins command below ( Alt- > ).
  325.  
  326.  
  327. Print  (Alt-P, menu: Print...)
  328. -----
  329. This allows either printing the whole buffer or just a marked block.  If
  330. your printer is not already turned on, or if it is not properly connected
  331. to your computer, an Alert box will instantly tell you that your printer
  332. is not responding.  For more information on selecting a block, please see
  333. the Select Block section below.  If a block is already selected when you
  334. give the Print command, it will default to printing just that block unless
  335. you click on the 'All' button in the alert blox.
  336.  
  337. Note that you can send any printer control codes you want to set left
  338. margin, bold, near letter quality, or any other things your printer can do.
  339. All you have to do is look at your printer manual to find out what codes
  340. do what.  For example, on my printer (which is pretty much Epson
  341. compatible) the code to set the perforation skip is Esc-'N'-'x', where x is
  342. the number of lines to skip.  To get the escape character, type Control-[
  343. (or Alt-Esc), then type upper case N.  Then type Control-I to set a
  344. perforation skip of 9, since I is the ninth letter of the alphabet (don't
  345. worry about the funny character that appears - that's just what the ST uses
  346. for displaying this control code which is normally non-printable).
  347.  
  348. If you have one or more printer control strings that you want to be
  349. able to send to the printer without typing them in each time, this can be
  350. done using macro.  Please see the sections on Macros and Configuration
  351. below for details on this.
  352.  
  353. If you need to print out of the serial (modem) port, please see the Zap to
  354. Modem section below.
  355.  
  356.  
  357. Clear Buffer  (Alt-C, menu: Clear buffer)
  358. ------------
  359. This command wipes out everything currently in the edit buffer, but it will
  360. always ask for confirmation before doing it.
  361.  
  362.  
  363. Block Cut/Paste and all Delete functions 
  364. (Alt-B, F1-F5, Delete, Shift-Delete, UNDO)
  365. ==========================================
  366.  
  367. Select Block  (F1 & F2 or mouse)
  368. ------------
  369. A block can be selected either by using the mouse or using F1 and F2. 
  370. To use the mouse, hold down the left button while dragging the mouse
  371. either up or down to the end of the desired block.  If you drag to the top
  372. or bottom of the window, the text will scroll while continuing to select
  373. the block, so it is easy to select blocks larger than the size of the
  374. window.  If you use the function keys, F1 sets the start of a new block
  375. (thus cancelling any prior block selection).  F2 sets the end of a block,
  376. which can be either before or after the start.  Note that if you hit F2
  377. again after moving the cursor outside the existing block, it will extend
  378. the block to that new point, but if the cursor is within an existing block,
  379. F2 will shrink the block.  Also note that the last character of a block is
  380. always the character preceding the cursor -- this makes it easy to select
  381. an entire line without also including the first character of the next line.
  382.  
  383. Deselect Block  (F3 or mouse)
  384. --------------
  385. To deselect a block either hit F3 or use the mouse to set the end of a
  386. block at its starting point.
  387.  
  388.  
  389. Cut Block  (F4, Alt-B, menu: Block...)
  390. ---------
  391. This command deletes a block that you have already selected and places it
  392. into a paste buffer.  Each time you use this command you lose anything that
  393. was already in the paste buffer.  If you just want to make a copy of a
  394. block rather than deleting it, first Cut it, then hit UNDO or F5 (which
  395. pastes it), and finally put the cursor where you want the copy to go and
  396. paste it again.  The paste buffer will remain intact until you do any
  397. further deletion of any type or until you cause a word wrap to occur.  If
  398. you try to cut a block larger than the paste buffer can hold, you will be
  399. asked if you wish to Continue without any Undo or Paste capability (thus
  400. losing the block forever) or Cancel.
  401.  
  402. If you wish to save a block to its own disk file, select a block and then
  403. use one of the Save File commands described above.
  404.  
  405. Paste Block  (F5, UNDO, Alt-B, menu: Block...)
  406. -----------
  407. This inserts the contents of the paste buffer at the cursor.  You may then
  408. need to reformat using the word wrap command.
  409.  
  410.  
  411. Delete Character or Line  (Delete, Shift-Delete)
  412. ------------------------
  413. Deleting a line (or multiple lines or characters in sequence) has the same
  414. effect as doing a block cut of them.  So, to delete or move a few entire
  415. lines, it may be easier to just hit Shift-Delete a few times rather than
  416. marking them as a block and cutting them.  As long as you don't move the
  417. cursor between deletions (and don't force a word wrap), each new line or
  418. character will just be appended to the paste buffer without losing its
  419. previous contents.  However, please note that hitting Backspace DOES empty
  420. the paste buffer of everything except the character you just backspaced
  421. over.
  422.  
  423.  
  424. Technical Notes  (paste buffer, line pointers, and word wrap)
  425. ---------------
  426. The paste buffer, which is used to hold cut blocks and deleted lines and
  427. characters, is not very large.  It is equal to 1/8 the size of the edit
  428. buffer (1280 bytes in the case of the normal 10K buffer).  This buffer is
  429. also used for word wrap operations, so anything in the paste buffer is
  430. lost as soon as any word wrap is done.  This buffer is the same size as the
  431. block of memory that is used to store pointers to the start of each line. 
  432. Since each pointer is two bytes long, the default 10K edit buffer can
  433. handle up to 1280/2 = 640 lines.  If you load a file with lots of blank or
  434. short lines, you could exceed that, in which case the file will load, but
  435. the last line will just be one long line containing all the rest of the
  436. file.
  437.  
  438.  
  439. Search/Replace  (Alt-F, menu: Find/replace, F6)
  440. --------------
  441. When you choose this command, you are first asked if you want to just Find
  442. something or perform a Search & Replace operation.  This defaults to Find.
  443. Next you enter the string to search for.  Normally, this would be entered
  444. as a string of characters, including any control characters such as
  445. Cntrl-M/Cntrl-J for carriage return/linefeed or Cntrl-I for the tab
  446. character, etc.  Alternatively, you can enter any of the full 0-255
  447. character set by using their two-digit hexadecimal values and putting a
  448. dollar sign ($) at the start of the string.  For instance, to enter
  449. CHR(155), you would type '$9B' without the quotes.  The null character
  450. would be '$00'.  If you are a masochist, you could also use hex values to
  451. enter normal text -- the hex string for 'XYZ' would be '$585960'.  The
  452. letters A-F in hex strings can be entered in either upper or lower case.
  453.  
  454. One little thing to be aware of is that any underline character at the end
  455. of the string will not be recognized as part of the string.  This is
  456. because GEM uses the underline character in the dialog box as the
  457. background template, and I find the end of the string by searching backward
  458. until I find the first character that is not an underline character.
  459.  
  460. After entering the search string, you are asked whether to make the search
  461. case sensitive or not.  This initially default to No, which means that it
  462. will match either upper or lower case versions of the search string. 
  463. Anytime you change the case sensitivity of the search, that becomes the new
  464. default.
  465.  
  466. If you have chosen Replace, then you get to enter the replacement string. 
  467. Then you pick whether to Query (i.e., ask you what to do when it finds each
  468. match) or just go ahead and replace every match it finds without asking. 
  469. The default is always Query.  If you pick Query, then each time it finds a
  470. match you get to tell it whether to (a) skip to the Next match without
  471. replacing this one, (b) Replace this match, or (c) Quit searching.
  472.  
  473. Once a search string has been entered, you can always just hit F6 to find
  474. the next match.
  475.  
  476. As a final note, if you need really fancy search/replace capabilities, I
  477. can recommend another program of mine called SRCHREP.PRG, which allows
  478. various types of wildcards in search strings (alpha, decimal, hex
  479. wildcards) and replace strings (leave unchanged, make lower case, and make
  480. upper case wildcards), as well as replacing only every Nth match when doing
  481. a global replace.
  482.  
  483.  
  484. Quit  (Alt-Q, Alt-X, Esc, menu:Quit, mouse:CloseButton)
  485. ----
  486. You wouldn't think Quitting would require any explanation, would you?
  487. But there are a few things to know.  If you use Alt-Q, Esc or menu:Quit,
  488. then you will always be asked if you want to save your work if any changes
  489. have been made since the last time it was saved.  If no changes have been
  490. made, it will just ask if you Really want to quit.
  491.  
  492. If you use either Alt-X or clicking on the window's close button (upper
  493. left corner), then Diary will just plain quit regardless of whether you've
  494. saved your changes or not.  If you are running as a desk accessory, failing
  495. to save changes is not too terrible, since you can just re-open Diary and
  496. everything will still be there (until you reboot).  But beware that if you
  497. are running it as a PRG, then you better be sure anything you care about
  498. has been saved to disk, because everything in the buffer is lost as soon as
  499. you quit.
  500.  
  501.  
  502. Margins  (Alt- <, Alt- >, menu:Margins)
  503. -------
  504. No, you don't have to hold down the shift key for the Alt- < and Alt- >
  505. commands to work -- I could have said Alt-comma and Alt-period, but I
  506. figured the < and > symbols made more sense for left and right margins.
  507. Please note that the left 'margin' refers only to what gets sent to the
  508. printer and has no effect on what displays on the screen.  This works
  509. by sending space characters to the printer at the start of each line,
  510. so it should work fine with any type of printer.
  511.  
  512. The right 'margin' is not really a margin, but is the column at which word
  513. wrapping occurs, and it does affect the screen display.  Both left margin
  514. and right wrap column are measured from the furthest left column which is
  515. column zero.  Thus the default right wrap column for medium and high
  516. resolution is 75, which gives 76 columns including the end of line
  517. (carriage return) character.  The right wrap column can be set to any value
  518. greater than 19 on up to infinity (well, maybe not quite infinity).
  519. For other information on word wrap, please see the Word Wrap section above.
  520.  
  521.  
  522. Note on extended lines  (longer than one window width)
  523. ----------------------
  524. Be sure to turn off Wrap before trying to edit a line that extends beyond
  525. the first window, unless you want it to wrap when you hit the end of the
  526. second (or later) window.  Simply moving the cursor with the arrow keys
  527. beyond the furthest left or right columns of the window will move you to
  528. the next or previous section of the line.  Shift-left or right arrow takes
  529. you to the start/end of the line, no matter how far over it is.  Another
  530. command, Control-arrow, takes you just to the left or right edge of the
  531. current window.  Clicking with the mouse by the edge of the window will
  532. also take you to the next/previous section of the line.
  533.  
  534. One interesting thing you can now do with wrap turned off is to use Diary
  535. instead of a sector editor to Find and then change text strings in PRG,
  536. TOS, or any other file.  Just be careful not to change the length of them!
  537. Toggling into Hack mode automatically turns Wrap off.
  538.  
  539.  
  540. Tabs  (Tab, Alt-Tab, menu:Tab settings)
  541. ----
  542. In insert mode, the Tab key inserts whatever number of spaces you have it
  543. set for (default is 5).  In overwrite mode, it skips over that number of
  544. spaces rather than erasing anything.  I figured it would be more useful
  545. that way for editing existing tables.
  546.  
  547. To change the spacing between tab stops, use either the Alt-Tab command or
  548. the menu:Tab settings command.  All tabs have the same spacing between
  549. them.
  550.  
  551.  
  552. Macros  (Control-FunctionKey, Alt-FunctionKey, menu:Macros)
  553. ------
  554. This refers only to text macros -- there are no command macros.  In other
  555. words a macro is simply a string of characters that you can insert
  556. whenever you want without having to type them all in.  This might be
  557. useful for entering your name and address at the top of letters or keeping
  558. various printer set-up strings handy for different types of printing needs.
  559. There are 10 macros available (one for each function key), and each can
  560. hold up to 80 characters.  
  561.  
  562. To store a string of text as a macro, first select a block as described
  563. above under Select Block, then copy the block to a macro with Cntl-FuncKey.
  564. For instance, to set up the macro for F1, select a block and then hit
  565. Control-F1.  Then when you want to insert that macro, hit Alt-F1.  The
  566. menu:Macros command first reminds you how to save and then use a macro, and
  567. then displays all ten macros, one per line.  Note that if you want the
  568. macros to still be there after rebooting, you need to save the
  569. configuration, which requires a registered version of Diary.
  570.  
  571.  
  572. Date Insertion  (Alt-D, menu:Date insert)
  573. --------------
  574. This command inserts the current date at the cursor using the format
  575. MM/DD/YY, as in 05/03/90 for May 3, 1990.  This assumes you have your ST's
  576. date set.
  577.  
  578.  
  579. Configuration  (Alt-N, menu:New config?, Control-Return)
  580. -------------
  581. This provides user-alterable buffer size (4-64K) and many other options.
  582. (Saving a new config file and new buffer size is available only to
  583. registered users.)  This command first shows your current status and
  584. settings:  file name, path, buffer size/used, margins, end of line
  585. character, insert/overwrite mode, tabs, case sensitivity in search, wrap
  586. on/off mode, tabs, text/hack mode, whether macro 10 is sent as a printer
  587. init string, and the ten macros (display of the macros is truncated to what
  588. will fit on one line).  To toggle the End-Of-Line character between blank
  589. and the little 'cr', hit Control-Return anytime you are in edit mode (not
  590. while looking at the configuration display).  Not shown in the config
  591. display, but viewable by trying to Save to an existing disk file, is
  592. whether the Save command defaults to Overwrite or Append.  Its current
  593. default gets saved to the config file along with all the other
  594. configuration settings.
  595.  
  596. You are then given the option of changing the buffer size, but this does
  597. not take effect until you reboot (or reload into Multi-Desk).  Note that 
  598. if you start dealing with a buffer contents larger than about 20K, you will
  599. start to notice a slowdown when inserting or deleting near the beginning of
  600. the buffer.  This happens despite the fact that I use what is probably the
  601. fastest machine code routine possible to move everything around in memory. 
  602. For more info, read the tech notes below.
  603.  
  604. Next, you get to set whether or not to AutoLoad the current file on bootup.
  605. This is of use only to registered users, since it requires saving a new
  606. configuration.  This option allows you to specify a file for Diary to load
  607. into its buffer automatically upon bootup, so when you open Diary the file
  608. is already there without you having to go find and open it.  This is
  609. especially useful if you are always editing the same file such as a diary. 
  610. You set this up by:  (a) load the file of interest into the buffer, then
  611. (b) go to New Config (Alt-N), and (c) click through the screens until you
  612. are asked if you want to AutoLoad the current file, and finally (d) click
  613. on Yes.  The full path and filename get saved to the DIARY.CFG file along
  614. with the rest of the current configuration (assuming you tell it to really
  615. save the configuration when it asks at the end of all the configuration
  616. alert boxes).  If it can't find the specified file upon bootup, it just
  617. skips over that routine and no harm is done.
  618.  
  619. Next, you are asked whether to use macro #10 (Alt-F10) as a printer
  620. initialization string which will be sent to the printer before every print
  621. command.  This can be used if you always wish to tell your printer to do
  622. something like perforation skips or print in NLQ mode or any combination of
  623. printer commands up to 80 characters long.  See the section on Printing
  624. above for more info.  If you have more than one printer setup string that
  625. you'd like always available, you can save the others as macros too and then
  626. just insert the one you want at the beginning of the file or block before
  627. printing it.
  628.  
  629. The last config option you get is whether to keep a backup (.BAK) file
  630. whenever saving with Overwrite.  When saving with BAKup, Diary first
  631. deletes the previous .BAK file (if there is one), then renames the current
  632. disk file with a .BAK extender, and finally saves the new version of the
  633. file to disk.  Therefore, if any error occurs in saving the new version,
  634. the prior version will be there with the .BAK extender.
  635.  
  636. Finally, you are asked if you want to save that whole configuration.  Even
  637. if you don't save it to disk, the changes you made (other than buffer size)
  638. will still be in effect until you reboot.  Note that everything except the
  639. buffer size gets saved to a DIARY.CFG (or EDHAK.CFG) file, while the buffer
  640. size gets written into the main DIARY19R.ACC file itself.  For the config
  641. to be read upon bootup by Diary, this CFG file must be in the same folder
  642. or root directory as the main Diary file itself.
  643.  
  644. NOTE:  The file must be named its original name (e.g., DIARY19R.ACC, or
  645. EDHAK19R.ACC) for it to be found for writing the new buffer size.  However,
  646. I realize you may have reasons to name it something else, such as if you
  647. want to have two copies of it loaded at the same time, or different copies
  648. with different buffer sizes.  To do this, just rename it AFTER you have
  649. saved the desired buffer size to it.
  650.  
  651. **************************************************************************
  652. Tech Notes on Memory Management & Buffer Size in Diary
  653. ------------------------------------------------------
  654. The buffer size must be saved to the main acc file as part of the BSS
  655. length in the file header (rather than reading it in from a separate config
  656. file) to be able to safely allocate the proper amount of memory.  Other
  657. desk accessories that use a more typical method of allocating memory
  658. (dynamic allocation using a Malloc call) are not handled properly by TOS
  659. and will steal gobs of extra ram if you ever try switching between low and
  660. medium resolutions, because TOS does not deallocate that ram before
  661. allocating it again.
  662.  
  663. Diary handles the text buffer is simply one continuous block of RAM, and so
  664. to insert or delete near the beginning of that can require moving around
  665. a large chunk of ram.  I use a very fast machine code routine to do this,
  666. but it obviously isn't fast enough when you get above about 25K.  The way
  667. other word processors get around this is to dynamically allocate small
  668. chunks of ram as needed and link them together with pointers thus requiring
  669. much fewer actual bytes to be moved.  That approach takes more ram to
  670. handle the same amount of text, and more importantly, if that approach is
  671. used in an ACC things get screwed up in a low<->med resolution switch,
  672. which is why I gave up on it months ago.  However, when I get more into the
  673. prg version of Diary, I hope to work on it some more.  Incidentally, the
  674. slowdown is exactly the same thing you run into with Flash's buffer, if you
  675. ever use that.
  676. **************************************************************************
  677.  
  678. Encryption  (Alt-E, menu:Encryption)
  679. ----------
  680. This command lets you make anything in your buffer confidential by
  681. encrypting it using a password of your choice.  You MUST remember your
  682. password to be able to unencrypt it, which is done using the same command.
  683. You can even encrypt it more than once using different passwords, and then
  684. unencrypt it using the same passwords in any sequence you like.  One major
  685. caution on encryption:  If you password is more than one character long
  686. (which is certainly a good idea), then do NOT use the Append, Merge, Block
  687. Save features or load/save a file larger than your buffer because the
  688. decryption will not work properly unless you get very lucky (e.g., the file
  689. length is an exact multiple of the password length.)
  690.  
  691.  
  692. Hack Options (Alt-T, Alt-V, menu:Hack Options)
  693. ------------
  694. 1)  Toggle Text/Hack mode (Alt-T)
  695. For most word processing needs you will want to use Text mode, which
  696. starts a new display line for every CR/LF [ CHR(13), CHR(10) ] combination
  697. in the file (or any time you hit Return while entering text from the
  698. keyboard).  Text mode displays every character, 0-255, EXCEPT the CR/LF
  699. combination, which it either displays as the little 'cr' symbol or as a
  700. blank (null) space at the end of each line.  The blank option is only
  701. available to registered users.  Also, while in Text mode, the current
  702. Line and Column of the cursor are shown in the top window bar, measured
  703. from line zero at the top, and column zero at the left edge.
  704.  
  705. Hack mode displays all 0-255 characters including the CR/LF combination as
  706. individual characters.  In Hack mode, CR and LF are treated just like any
  707. other characters, and every line is displayed with a length of 64 (or 32 in
  708. low res) unless you change the right wrap column while in Hack mode.  This
  709. is similar to the displays found in disk sector editors, except that you
  710. can't display the whole window as hexidecimal.  However, the hex value of
  711. the character at the cursor is shown in the top window bar, preceded by
  712. a '$' sign.  I figured that if you need to look for a string of hex values,
  713. it makes more sense to let the Find command do it for you than to try to
  714. visually find them on the screen.  Also shown to the left of the hex value
  715. is 'n' which is the number of bytes (characters) you are from the top of
  716. the buffer -- this could also be called the offset.  The first character is
  717. therefore number zero. 
  718.  
  719. 2)  View/Edit RAM  (Alt-V)
  720. Yes, you can load any part of your ST's memory into the edit buffer, either
  721. by searching for a sequence of characters or by choosing which specific
  722. block of memory to load.  Then you can edit it, save it to a file, or even
  723. write it back RAM in its original or some other location.  Hack away!  but
  724. don't complain to me if your machine crashes after you change something in
  725. RAM.  The RAM you can access includes addresses from zero up to whatever
  726. your operating system thinks is the top of physical RAM (phystop).  This
  727. includes all the system variables, screen ram, etc.  However, with the
  728. ramdisk I use (Eternal2), phystop is lowered to fit the ramdisk above it,
  729. so phystop becomes lower than the actual top of physical ram.  To get to
  730. that RAM in a ramdisk you can use the disk editing feature described below.
  731.  
  732. 3)  You can use the EdHak version of Diary as a disk sector editor!  To do
  733. this, start as if you were going to open a file, but leave the filename
  734. part of the item selector empty and just specify which drive you want. 
  735. Then open it and you will be asked which sector to start reading from. 
  736. Sector zero is the boot sector, and this is followed by two copies of the
  737. FAT (file allocation table), then the root directory, and finally the
  738. actual file data.  Unless you are using a very strange format for your
  739. drive (i.e., something not supported by GEM), files are stored in 1K chunks
  740. called 'clusters' each of which consists of two 512-byte 'sectors'.  Diary
  741. will load as many sectors as will fit into the buffer and still leave you a
  742. couple K to add to it, just as if you had loaded part of a file that was
  743. too big for the buffer.  If you don't know anything about disk structure,
  744. do NOT try saving this back directly to disk sectors.  If you want to save
  745. it as a file, then give it a filename and all will be safe.  If you DO know
  746. what you are doing, then this disk editing feature provides some different
  747. options from anything you are likely to find in a typical disk/sector
  748. editor, since you can view/edit more than one sector at a time, toggle into
  749. text mode, insert, append to files, etc.  I understand that there is a
  750. program available called something like MIRROR that lets you save the FAT
  751. and root directory to a disk file and then restore them if they ever get
  752. corrupted.  Well, now you can do the same thing with EdHak alone.
  753.  
  754.  
  755. Insert Hex or Text String  (Alt-I, menu:Insert bytes)
  756. -------------------------
  757. This is for direct entry of all 256 characters (0 - 255).  To enter ones
  758. above ASCII #127 you need to enter their hex values (unless you know some
  759. key combination that I don't that will do it!).  For instance, to get the
  760. trademark symbol (little 'TM') on the screen, you need ASCII #191
  761. (decimal), which is also known as CHR(191), which is $BF in hex.  Don't
  762. expect your printer to output a 'TM' though.  On my printer, character #191
  763. is an italics question mark.
  764.  
  765. Note that here and anywhere a string is to be entered, such as for
  766. search/replace, entering hex byte values gives access to all 0-255 possible
  767. characters.  Hex digits must be entered starting with a '$' and then must
  768. be entered in pairs or the string will be interpreted simply as a string of
  769. characters rather than hex values.
  770.  
  771. One special character has its own keyboard command.  The Escape character
  772. CHR(27) can now be output with Alt-Esc as well as the normal Control-[
  773. (which puts out ASCII character #27, just like Control-A puts out ASCII #1
  774. and Control-Z puts out ASCII #26).  This can be useful for putting in
  775. printer control codes -- see section on Printing above.
  776.  
  777.  
  778. Zap to Modem / Serial Port  (Alt-Z, menu: Zap to modem)
  779. --------------------------
  780. This command prints the buffer or just a marked block to directly out the
  781. serial RS232 port, just as if you had Printed it to the printer.  This
  782. command can be useful when telecommunicating when you want to send a few
  783. lines of text from some existing file without loading it into your terminal
  784. program's buffer.   Note that since it treats the output as if it were
  785. going to a printer, it first sends the printer setup string (macro #10) if
  786. you have the configuration set up to do that, and then sends spaces at the
  787. start of each line, if you have a left print margin set to anything higher
  788. than zero.  So you may need to change your configuration before using this
  789. command -- but you don't need to reboot to make the new configuration
  790. active.
  791.  
  792. The only difference between printing out the modem (serial) port and
  793. printing out the printer (parallel) port is that no carriage return,
  794. CHR(13), is sent at the end of the whole print operation when Zapping to
  795. modem, but one is sent when printing to the printer port, since printers
  796. usually need this to clear the last line from their internal buffer.  So,
  797. if you are printing to a serial printer rather than to a modem, you need
  798. to make sure you have a CR at the end of the last line of your text.
  799.  
  800.  
  801. Compatibility?
  802. =============
  803. Pinhead
  804. -------
  805. I use the Pinhead fast-load AUTO folder program all the time when booting
  806. from my hard drive, and I have never seen a problem with it.  However, when
  807. I went to the Toronto Atari show without a hard drive I stayed up til 3:00
  808. AM tracking down why Diary wouldn't work, and the solution was to get rid
  809. of Pinhead.  So if you want to use Pinhead, you may have to disable it for
  810. loading of Diary.  Refer to the documentation that comes with Pinhead on
  811. how to set up a data file telling Pinhead not to fast-load Diary.
  812.  
  813. Quick ST and Turbo ST
  814. ---------------------
  815. Use of either of these screen output speedup programs is highly
  816. recommended.  Diary versions 1.8 and later incorporate a fast machine code
  817. routine that outputs text directly to the screen without using the built in
  818. GEM BIOS functions or even slower VDI functions.  This bypasses any speedup
  819. for text output provided by Quick ST or Turbo ST, BUT they still greatly
  820. speed up the screen clearing and scrolling functions, so they are well
  821. worth using if you have enough RAM for one of them.
  822.  
  823. Diary has always been compatible with Turbo ST (at least through Turbo ST
  824. version 1.6 which is the latest I have).  However, with Quick ST there are
  825. a couple problems you may have run into in earlier versions that are now
  826. fixed.  Version 1.8 and later of Diary should be compatible with any
  827. version of Quick ST, and starting with version 2.0 of Quick ST, it seems
  828. compatible with any version of Diary.  Earlier versions of Quick ST had a
  829. little bug when run with TOS 1.0, which caused the cursor to do strange
  830. things with earlier versions of Diary.  Starting with Diary v 1.8 I simply
  831. bypassed all the cursor drawing routines so Quick ST couldn't mess them up.
  832. Then in version 2.0 of Quick ST Darek Mihocka fixed the bug.
  833.  
  834. Flash
  835. -----
  836. Compatibility with Flash is now almost perfect:  Opening up Diary now
  837. almost always draws the window fully (and when it doesn't it's no big deal
  838. since just resizing the window fixes it).  And if you go to Flash's on-line
  839. mode without exiting Diary, you can now return to Diary without crashing
  840. (after getting back to Flash's edit window, of course).  That one took a
  841. couple entire weekends of work to figure out, and I caution you not to try
  842. that with any other text editor accessories or any accessory that opens a
  843. window (such as the Atari control panel).  Finally, the cursor position
  844. does not now get screwed up when going back and forth between Diary and
  845. on-line mode.
  846.  
  847. One little weirdness still exists with Flash when running Diary from within
  848. Multi-Desk version 1.8 (I don't know about later versions).  If you have
  849. done the sequence described above (going to on-line mode without closing up
  850. Diary yourself), then as long as you remain in Flash anytime you click on
  851. Multi-Desk you automatically open Diary without getting to choose anything
  852. else that might be in the Multi-Desk menu.  Then this menu also gets
  853. bypassed when quitting from Diary.
  854.  
  855. UniTerm
  856. -------
  857. Version 1.8 of Diary became incompatible with UniTerm because of the fast
  858. screen output I started using, but this has now been fixed in Diary v 1.9. 
  859. To output text directly to the screen I needed to know where in RAM the
  860. screen was located, and I got that location during the initialization at
  861. bootup.  However, UniTerm changes the screen location for its help screen,
  862. which is where you get access to the desk accessories.  So, I fixed Diary
  863. to get the screen address each time its window gets opened, so it knows
  864. where to draw the text.  This probably fixes problems with some other
  865. programs too.
  866.  
  867. Please note that in UniTerm, unlike Flash, you MUST exit Diary before
  868. switching to on-line mode, or else UniTerm will lock up as soon as you try
  869. switching back to Help mode or try exiting from UniTerm.
  870.  
  871. Others?
  872. -------
  873. Please let me know of any other compatibility problems you run into so I
  874. can try fixing them or at least document them to save others as much
  875. hassle as possible.
  876.  
  877.  
  878. REGISTRATION
  879. ============
  880. This program is shareware, not freeware.  This means that you get to try it
  881. out for free.  If you find that you want to keep using it, then you are
  882. supposed to pay for it so you can legally own it.  I have been considering
  883. distributing this commercially, but that would require much fancier (more
  884. expensive) packaging and printed documentation, as well as giving the
  885. distributor 60% of the retail price.  The end result of would be to force
  886. the price up to at least $15 or $20 just for me to keep from losing money. 
  887. Personally, I much prefer the idea of making software available to as many
  888. people as possible for as little money as possible, and letting everyone
  889. get to really try it out before having to buy it.  THAT is what shareware
  890. is all about.  Therefore, you are welcome to use Diary & EdHak for a month
  891. as much as you like.  If you decide it's not for you, that's fine.  But if
  892. you decide it's a piece of software you'd like to own, then just send me
  893. the $10.00 registration and you will be rewarded with a more full-featured
  894. version.
  895.  
  896. For the $10 registration I would gladly provide custom versions with
  897. different ALT-key and function key assignments.  Registration will also
  898. make me much more willing to answer questions and incorporate suggested
  899. changes.  I am very interested in suggested improvements, bug reports, etc.
  900. Further improvements are expected, even if I start putting more time into
  901. the educational/metapsychological software project I'm working on.  If you
  902. use Diary, but don't feel that it is worth $10 to you, send me $5 and any
  903. suggested improvements, and I will still register you.  Registering either
  904. Diary or EdHak gets you registered for both.
  905.  
  906. The Modula-2 source code for an early version has been uploaded to at least
  907. the GEnie information service, and I would happily provide source for the
  908. current version to any registered user for your own personal use.
  909.  
  910. UPGRADES
  911. --------
  912. Registered users can always get the latest version by sending me $3 or
  913. more (up from $2 by popular demand) to cover my cost of disk and mailing. 
  914. I will send a post card to all registered users to let you know whenever I
  915. come up with a major new version (next will be 2.0).  The version available
  916. to non-registered users will always have some feature(s) disabled.  For
  917. instance, non-registered users will always have to live with the 'cr'
  918. character at the end of the lines, and you can not save a new
  919. configuration.  I don't consider these major, but just a little added
  920. incentive to register.
  921.  
  922.  
  923. The Future of Diary  (no guarantees, but there is more I want to do)
  924. ===================
  925. 1)  I plan to add the ability to search large disk files (infinitely large)
  926. and disk sectors to find which part you want to load into the buffer.  The
  927. routines to do this would also let me change the Encryption feature to
  928. work on a whole file of any size, rather than just what will fit into the
  929. buffer (which has limited the encryption capability to the buffer size so
  930. far).
  931.  
  932. 2)  I need to have a 'bookmark' capability, which will probably just be a 
  933. command to find the block starting point, so the Start Block command can
  934. also be used to set a bookmark.
  935.  
  936. 3)  I will probably change the configuration procedure to a dialog box
  937. showing all the config options rather than the current method of showing
  938. a separate alert box for each one.
  939.  
  940. 4)  When word wrapping an existing paragraph (i.e., reformatting it) if a
  941. sentence ends with a period at the end of a line followed immediately by
  942. the carriage return, only one space will be put after the period if it ends
  943. up elsewhere on a line due to the wrap.  To be fully correct it would need
  944. to put two spaces after the period, and I will have a whack at fixing that.
  945. Also, I may make it recognize paragraphs that are separated only by an
  946. indent (i.e. at least one space) rather than requiring a blank line
  947. between them.
  948.  
  949. 5)  Maybe create my own sliders/arrows that repeat (the GEM ones don't
  950. without TOS 1.4).
  951.  
  952. 6)  I MAY eventually see about making the drop-down menu items highlight as
  953. you move the mouse over them.  But I consider that basically a cosmetic
  954. improvement, and I'm not much into putting effort into cosmetics.
  955.  
  956. 7)  I don't know if there's a way to do it, but I'd like to make the
  957. desktop directory windows update themselves when a file is saved from
  958. Diary.  For now you have to hit Escape after leaving Diary to get the
  959. window updated.  (Just as is true with Universal Item Selector).
  960.  
  961. 8)  Deal directly with files with other end-of-line characters (e.g., just
  962. LF).  For now you have to do a full search/replace to change some other end
  963. of line character sequence into CR/LF to use Diary in its text mode.
  964.  
  965. 9)  I will look further into using a different memory handling method to
  966. speed things up when dealing with a large buffer, and possibly allowing
  967. sizes above 64K.
  968.  
  969. 10)  I have played with running other programs from within Diary with some
  970. success (e.g. running ARCShell to unarc some files), but so far it leaves
  971. the screen really messed up after exiting the other program and
  972. returning to Diary.
  973.  
  974.  
  975. Final Words
  976. ===========
  977. Standard Disclaimer:  This software and documentation have no warranty of
  978. anything.  You use it at your own risk.  I use it myself all the time, but
  979. since I can not possibly check it out with every hardware/software set up
  980. out there, I can only offer to try to fix any bugs that you find and report
  981. to me.  Of course, if you received a bad copy of it from me, I will gladly
  982. exchange that disk for a good copy.
  983.  
  984. DIARY.ACC & EDHAK.ACC version 1.9, copyright 1990 by
  985.  
  986. Craig Harvey
  987.  
  988. GEnie:      c.harvey
  989. CompuServe: 73047,600
  990.  
  991. Clear Thinking, BBS: 313-761-2444    P.O. Box 715  Ann Arbor, MI  48105
  992.